/**
 * 
 */
package com.baijia.tianxiao.push.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baijia.tianxiao.push.model.PushBindRecord;

/**
 * @author leiruiqi
 *
 */
public interface PushBindRecordService {

	/**
	 * 新增绑定
	 * 
	 * @param pushBindRecord
	 */
	public void saveNewBind(PushBindRecord pushBindRecord);
	
	/**
	 * 查询用户所有绑定
	 * 
	 * @param pushBindRecord
	 * @return
	 */
	public List<PushBindRecord> qureyUserBindList(PushBindRecord pushBindRecord,Integer limit);
	
	/**
	 * 查询用户所有绑定
	 * @param userId
	 * @param userType
	 * @param deviceDomain
	 * @return
	 */
	public List<PushBindRecord> qureyUserBindList(String userId,String userType,Integer limit);	

	/**
	 * 根据uid规则查询用户所有绑定,比如机构前缀，查找所有用户所有设备的绑定
	 * 
	 * @param userId
	 * @param userType
	 * @param deviceDomain
	 * @return
	 */
	public List<PushBindRecord> qureyUserBindByPrefix(String userIdPrefix,String userType,Integer limit);	

	/**
	 * 根据uid查询用户所有绑定
	 * 
	 * @param userId
	 * @param userType
	 * @param deviceDomain
	 * @return
	 */
	public List<PushBindRecord> qureyUserBind(String userId,String userType);
	
	/**
	 * 查询用户最新的绑定
	 * 
	 * @param pushBindRecord
	 * @return
	 */
	public PushBindRecord queryUserBindLatest(PushBindRecord pushBindRecord);
	
	/**
	 * 查询用户最新的绑定
	 * @param userId
	 * @param userType
	 * @param deviceDomain
	 * @return
	 */
	public PushBindRecord queryUserBindLatest(String userId,String userType);
	
	/**
	 * 解绑用户最新的绑定
	 * @param pushBindRecord
	 */
	public void unBindLatest(PushBindRecord pushBindRecord);
	
	/**
	 * 解绑用户最新的绑定
	 * @param pushBindRecord
	 */
	public void unBindLatest(String userId,String userType);
	
	/**
	 * 根据设备id解绑
	 * 
	 * @param deviceId
	 */
	public void unBindByDeviceId(String deviceId);
	
	/**
	 * 根据设备id查询所有绑定状态的记录。
	 * @param deviceId
	 * @return
	 */
	public List<PushBindRecord> queryUserBindListByDeviceId(String deviceId);
	
	public int saveOfUpdateForBind(PushBindRecord record);
	
}
